package r21310.chap04.d1109;
//方法的参数是抽象类

public class FunctionDemo03 {
    public static void main(String[] args) {
        Student stu=new Student("王五");
        //要调用animal是抽象函数所以不能new一个新对像        实参是抽象类的子类具体类
        Cat cat=new Cat("花花");
        stu.feed(cat);
        Dog dog=new Dog("大黑");
        stu.feed(dog);
        Pig pig=new Pig("佩奇");
        stu.feed(pig);
        //叫做匿名内联类 没有class直接new出来的叫做匿名内部类
        stu.feed(new Animal("小鸡") {
            @Override
            public void shout() {
                System.out.println("咯咯咯咯");
            }
        });
    }
    //内部类
    static class Pig extends Animal{

        public Pig(String name) {
            super(name);
        }

        @Override
        public void shout() {
            System.out.println("恨恨恨");
        }
    }
}
